package com.xique.client.service.biz.service;

import com.xique.client.bean.request.*;
import com.xique.common.core.web.domain.AjaxResult;

/**
 * @author shd
 * @create 2021/7/22 15:53
 */
public interface IClientHomeBizService {

    /**
     * 岗亭列表
     *
     * @param userId 用户ID
     * @return com.xique.common.core.web.domain.AjaxResult
     * @author shd
     * @date 2021/7/23 9:50
     */
    AjaxResult getClientList(Long userId);

    /**
     * 选择岗亭
     *
     * @param request ClientHomeSelectClientRequest
     * @return com.xique.common.core.web.domain.AjaxResult
     * @author shd
     * @date 2021/7/23 9:50
     */
    AjaxResult selectClient(ClientHomeSelectClientRequest request);

    /**
     * 获取岗亭首页信息
     *
     * @param clientId 岗亭ID
     * @return com.xique.common.core.web.domain.AjaxResult
     * @author shd
     * @date 2021/7/27 10:50
     */
    AjaxResult getHomePageInfo(String clientId);

    /**
     * 获取岗亭设备列表
     *
     * @param request 岗亭设备信息
     * @return com.xique.common.core.web.domain.AjaxResult
     * @author shd
     * @date 2021/7/29 10:24
     */
    AjaxResult getDeviceList(ClientDeviceListRequest request);

    /**
     * 岗亭通道配置修改
     *
     * @param request 岗亭通道配置
     * @return 修改结果
     */
    AjaxResult editClientLaneConfig(ClientLaneConfig request);

    /**
     * 通道明细
     *
     * @param laneId 通道ID
     * @return 通道明细
     */
    AjaxResult lanDetail(Long laneId);

    /**
     * 手动进出场
     *
     * @param request ClientHandInOutRequest
     * @return 手动进出场信息
     */
    AjaxResult handCarInOrOut(ClientHandInOutRequest request);

    /**
     * 在场记录车牌修改
     *
     * @param request AjaxResult editParkOnPlate(ClientPlateEditRequest request);
     * @return 修改结果
     */
    AjaxResult editParkOnPlate(ClientPlateEditRequest request);

    /**
     * 在场列表获取入场图片
     *
     * @param recordId 记录ID
     * @return 入场图片
     */
    AjaxResult getParkOnUrl(String recordId);

    /**
     * 手动出场信息查询
     *
     * @param request ClientHandOutInfoRequest
     * @return 手动出场信息
     */
    AjaxResult getHandOutInfo(ClientHandOutInfoRequest request);

    /**
     * 取消放行
     *
     * @param request ClientCancelPassRequest
     * @return 取消放行结果
     */
    AjaxResult cancelPass(ClientCancelPassRequest request);

    /**
     * 现金放行
     *
     * @param request ClientCashOrFreePassRequest
     * @return 现金放行结果
     */
    AjaxResult cashPass(ClientCashOrFreePassRequest request);

    /**
     * 免费放行
     *
     * @param request ClientCashOrFreePassRequest
     * @return 免费放行结果
     */
    AjaxResult freePass(ClientCashOrFreePassRequest request);

    /**
     * 车位信息
     *
     * @return com.ruoyi.common.core.domain.AjaxResult
     * @author shd
     * @date 2021/8/9 14:05
     */
    AjaxResult getSpaceInfo();

    /**
     * 修改剩余车位数
     *
     * @param request ClientSpaceEditRequest
     * @return com.xique.common.core.web.domain.AjaxResult
     * @author shd
     * @date 2021/8/9 15:04
     */
    AjaxResult spaceEdit(ClientSpaceEditRequest request);

    /**
     * 获取通道信息
     *
     * @param deviceId 设备ID
     * @return com.xique.common.core.web.domain.AjaxResult
     * @author shd
     * @date 2021/8/10 9:49
     */
    AjaxResult getLaneInfo(Long deviceId);

    /**
     * 现金收费记录
     *
     * @param request ClientCashPassListRequest
     * @return 现金收费记录
     */
    AjaxResult cashPassList(ClientCashPassListRequest request);

    /**
     * 查询入场记录详情（岗亭点击入场记录弹窗数据显示）
     *
     * @param inId 入场记录ID
     * @return 入场记录详情
     */
    AjaxResult parkInDetail(Long inId);

    /**
     * 出场详情
     *
     * @param outId 出场记录ID
     * @return 出场详情
     */
    AjaxResult selectParkOutDetail(Long outId);

    /**
     * 确认入场
     *
     * @param request ClientConfirmInRequest
     * @return 确认入场结果
     */
    AjaxResult confirmIn(ClientConfirmInRequest request);

    /**
     * 手动出场根据车牌号获取在场车辆列表
     *
     * @param request 手动出场根据车牌号请求
     * @return 手动出场根据车牌号获取在场车辆列表
     */
    AjaxResult getHandOutParkOnList(HandOutParkOnListRequest request);

    /**
     * 判断车场手动入场是否允许修改入场时间
     *
     * @return 车场手动入场是否允许修改入场时间
     */
    AjaxResult isAllowEditInTime();

    /**
     * 获取免费放行原因
     *
     * @return 免费放行原因
     */
    AjaxResult getFreePassReason();

    /**
     * 获取开闸原因
     *
     * @return 开闸原因
     */
    AjaxResult getOpenGateReason();

    /**
     * 获取关闸原因
     *
     * @return 关闸原因
     */
    AjaxResult getCloseGateReason();
}
